namespace ext.data
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>Configuration Structure</summary>
	/// <definedin>src\data\JsonWriter.js</definedin>
	public sealed class JsonWriter_Configuration : Record
	{
		
		#region Fields
		/// <summary>
		/// true to {@link Ext.util.JSON#encode JSON encode} the
		/// {@link Ext.data.DataWriter#toHash hashed data} into a standard HTTP parameter named after this
		/// Reader&apos;s meta.root property which, by default is imported from the associated Reader. Defaults to true.  If set to false, the hashed data is {@link Ext.util.JSON#encode JSON encoded}, along with
		/// the associated {@link Ext.data.Store}&apos;s {@link Ext.data.Store#baseParams baseParams}, into the POST body.  When using {@link Ext.data.DirectProxy}, set this to false since Ext.Direct.JsonProvider will perform
		/// its own json-encoding. In addition, if you&apos;re using {@link Ext.data.HttpProxy}, setting to false
		/// will cause HttpProxy to transmit data using the jsonData configuration-params of {@link Ext.Ajax#request}
		/// instead of params.  When using a {@link Ext.data.Store#restful} Store, some serverside frameworks are
		/// tuned to expect data through the jsonData mechanism. In those cases, one will want to set encode: false, as in
		/// let the lower-level...
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;&lt;tt&gt;true&lt;/tt&gt; to {@link Ext.util.JSON#encode JSON encode} the
		/// {@link Ext.data.DataWriter#toHash hashed data} into a standard HTTP parameter named after this
		/// Reader&apos;s &lt;code&gt;meta.root&lt;/code&gt; property which, by default is imported from the associated Reader. Defaults to &lt;tt&gt;true&lt;/tt&gt;.&lt;/p&gt;
		/// &lt;p&gt;If set to &lt;code&gt;false&lt;/code&gt;, the hashed data is {@link Ext.util.JSON#encode JSON encoded}, along with
		/// the associated {@link Ext.data.Store}&apos;s {@link Ext.data.Store#baseParams baseParams}, into the POST body.&lt;/p&gt;
		/// &lt;p&gt;When using {@link Ext.data.DirectProxy}, set this to &lt;tt&gt;false&lt;/tt&gt; since Ext.Direct.JsonProvider will perform
		/// its own json-encoding. In addition, if you&apos;re using {@link Ext.data.HttpProxy}, setting to &lt;tt&gt;false&lt;/tt&gt;
		/// will cause HttpProxy to transmit data using the &lt;b&gt;jsonData&lt;/b&gt; configuration-params of {@link Ext.Ajax#request}
		/// instead of &lt;b&gt;params&lt;/b&gt;.&lt;/p&gt;
		/// &lt;p&gt;When using a {@link Ext.data.Store#restful} Store, some serverside frameworks are
		/// tuned to expect data through the jsonData mechanism. In those cases, one will want to set &lt;b&gt;encode: &lt;tt&gt;false&lt;/tt&gt;&lt;/b&gt;, as in
		/// let the lower-level connection object (eg: Ext.Ajax) do the encoding.&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\data\JsonWriter.js</definedin>
		[ScriptName("encode")]
		public bool Encode;
		
		/// <summary>
		/// False to send only the id to the server on delete, true to encode it in an object
		/// literal, eg:  
		/// {id: 1}
		///  Defaults to false
		/// </summary>
		/// <htmlSummary>
		/// False to send only the id to the server on delete, true to encode it in an object
		/// literal, eg: &lt;pre&gt;&lt;code&gt;
		/// {id: 1}
		/// &lt;/code&gt;&lt;/pre&gt; Defaults to &lt;tt&gt;false&lt;/tt&gt;
		/// </htmlSummary>
		/// <definedin>src\data\JsonWriter.js</definedin>
		[ScriptName("encodeDelete")]
		public bool EncodeDelete;
		#endregion
		
		#region ext.data.DataWriter_Configuration Members
		/// <summary>
		/// false by default. Set true to have DataWriter return ALL fields of a modified
		/// record -- not just those that changed.
		/// false to have DataWriter only request modified fields from a record.
		/// </summary>
		/// <htmlSummary>
		/// &lt;tt&gt;false&lt;/tt&gt; by default. Set &lt;tt&gt;true&lt;/tt&gt; to have DataWriter return ALL fields of a modified
		/// record -- not just those that changed.
		/// &lt;tt&gt;false&lt;/tt&gt; to have DataWriter only request modified fields from a record.
		/// </htmlSummary>
		/// <definedin>src\data\DataWriter.js</definedin>
		[ScriptName("writeAllFields")]
		public bool WriteAllFields;
		
		/// <summary>
		/// false by default. Set true to have the DataWriter always write HTTP params as a list,
		/// even when acting upon a single record.
		/// </summary>
		/// <htmlSummary>
		/// &lt;tt&gt;false&lt;/tt&gt; by default. Set &lt;tt&gt;true&lt;/tt&gt; to have the DataWriter &lt;b&gt;always&lt;/b&gt; write HTTP params as a list,
		/// even when acting upon a single record.
		/// </htmlSummary>
		/// <definedin>src\data\DataWriter.js</definedin>
		[ScriptName("listful")]
		public bool Listful;
		
		/// <summary>
		/// Abstract method that should be implemented in all subclasses
		/// (e.g.: {@link Ext.data.JsonWriter#updateRecord JsonWriter.updateRecord}
		/// </summary>
		/// <definedin>src\data\DataWriter.js</definedin>
		[ScriptName("updateRecord")]
		public System.Delegate UpdateRecord;
		
		/// <summary>
		/// Abstract method that should be implemented in all subclasses
		/// (e.g.: {@link Ext.data.JsonWriter#createRecord JsonWriter.createRecord})
		/// </summary>
		/// <definedin>src\data\DataWriter.js</definedin>
		[ScriptName("createRecord")]
		public System.Delegate CreateRecord;
		
		/// <summary>
		/// Abstract method that should be implemented in all subclasses
		/// (e.g.: {@link Ext.data.JsonWriter#destroyRecord JsonWriter.destroyRecord})
		/// </summary>
		/// <definedin>src\data\DataWriter.js</definedin>
		[ScriptName("destroyRecord")]
		public System.Delegate DestroyRecord;
		#endregion
	}
}
